Rijen met een vingerafdruk
Probleem
Belgen worden administratief op een unieke manier bepaald door hun rijksregisternummer. Als je een belastingsbrief invult moet je niet alleen je naam en voornaam invullen maar ook je rijksregisternummer. Waarom is dat? Welnu, naam en voornaam volstaan niet om een belg op unieke manier aan te wijzen. Het komt voor dat verschillende Belgen dezelfde naam en voornaam hebben. En niemand wil de belastingen van een ander betalen.
Had men de naam, voornaam en adres dan niet kunnen gebruiken? Juist, maar wat als er familieleden met dezelfde voornaam en naam op hetzelfde adres wonen. Daarom heeft men beslist aan elke Belg een verschillend en dus uniek nummer toe te kennen.
Als je een rij niet op een unieke manier kan identificeren is je database niet integer en waardeloos.
Oplossing
Hoe kan je rijen in een tabel identificeren? We vertrekken van de volgende tabel:
Voornaam |
Familienaam |
Titel |
Jef |
Nys |
De jacht op een voetbal |
Jef |
Nys |
De zingende aap |
Jef |
Nys |
De koningin van Onderland |
Jef |
Nys |
Purpere pillen |
Jef |
Nys |
De muzikale Bella |
Jef |
Nys |
Het hemelhuis |
Jef |
Nys |
De zwarte Bomma |
Jef |
Nys |
De ooievaar van Begonia |
Jef |
Nys |
De schildpaddenschat |
Jef |
Nys |
De straalvogel |
De voornaam of de familienaam kunnen we niet als vingerafdruk van een rij gebruiken want alle tien rijden hebben dezelfde naam en voornaam. Als we de titel van het album pakken hebben we wel een vingerafdruk. Want geen enkele rij heeft een zelfde titel.
Wat doen we met de volgende tabel?
Voornaam |
Familienaam |
Titel |
Jef |
Nys |
De jacht op een voetbal |
Jean-Paul |
Sartre |
Het verdriet van Bella |
Greet |
Bauweleers |
Het verdriet van Bella |
We kunnen de titel niet meer als vingerafdruk gebruiken, want zowel Greet als Jean-Paul hebben een boek met dezelfde titel.
Maar nu kunnen we wel de naam als vingerafdruk gebruiken.
Ok. Wat met de volgende tabel?
Voornaam |
Familienaam |
Titel |
Jef |
Nys |
De jacht op een voetbal |
Jean-Paul |
Sartre |
Het verdriet van Bella |
Greet |
Bauweleers |
Het verdriet van Bella |
Jef |
Nys |
De straalvogel |
Nu zitten we weer vast. Er staan twee albums van dezelfde auteur in. We kunnen de naam niet meer als vingerafdruk gebruiken. Nu hebben we alle drie de kolommen nodig om een vingerafdruk te maken.
SQL puristen gaan meestal op zoek gaan naar één of meerdere kolommen die een rij in een tabel op unieke manier identificeren. In de praktijk gaan we ons met de tijdrovende taak niet bezig houden en de computer de identificatie laten doen. We voegen aan elke tabel een kolom toe met de naam Id en vragen aan de computer daarin een uniek nummer te zetten. Het is een goede praktijk om die kolom in alle tabellen dezelfde naam te geven, namelijk Id. Dat vergemakkelijkt het beheer van de database.
Id |
Voornaam |
Familienaam |
Titel |
1 |
Jef |
Nys |
De jacht op een voetbal |
2 |
Jean-Paul |
Sartre |
Het verdriet van Bella |
3 |
Greet |
Bauweleers |
Het verdriet van Bella |
4 |
Jef |
Nys |
De straalvogel |
Als er een nieuwe rij wordt toegevoegd wordt in de Id kolom automatisch de waarde 5 gezet. We hoeven ons geen zorgen meer te maken over de vingerafdruk van de rij. Wat er ook in de andere kolommen staat, we zijn er altijd zeker van door de Id, de rij op unieke manier te identificeren valt.